package modelo;


import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CategoriaDao 
{
	public boolean registrarCategoria(Categoria categoria) throws Exception
	{
		String tiraSQL="insert into \"CATEGORIAS\" " + 
		               "(cod_categoria,nombre_corto,nombre_largo,status) " + 
		               "values ('" + 
		                categoria.getCodCategoria() + 
		                "','" + categoria.getNombreCorto() + "','" + 
		                categoria.getNombreLargo() + "','A')";
		
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean activarCategoria(Categoria categoria) throws Exception
	{
		String tiraSQL= "update \"CATEGORIAS\" set status='A' where cod_categoria='" + categoria.getCodCategoria() + "'";
        
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean eliminarCategoria(Categoria categoria) throws Exception
	{
		String tiraSQL= "update \"CATEGORIAS\" set status='E' where cod_categoria='" + categoria.getCodCategoria() + "'";
        
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean actualizarCategoria(Categoria categoria) throws Exception
	{
		String tiraSQL= "update \"CATEGORIAS\" set " +
	                    "nombre_corto='" + categoria.getNombreCorto() + "'," +
	                    "nombre_largo='"+ categoria.getNombreLargo() + "' " +	                    
	                    "where cod_categoria='" + categoria.getCodCategoria() + 
	                    "' and status!='E'";
		
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public Categoria getCategoria(String cod_categoria) throws Exception
	{
		Categoria categoria= new Categoria();
		
		String tiraSQL= "select * from \"CATEGORIAS\" where cod_categoria='" + cod_categoria + "' and " +
				        "status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{
			categoria.setCodCategoria(cod_categoria);
			categoria.setNombreCorto(rs.getString("nombre_corto"));
			categoria.setNombreLargo(rs.getString("nombre_largo"));
		}
		else
		{
			categoria= null;
		}
		
		return categoria;
	}
	
	public Categoria getCategoriaNombreCorto(String nombreCorto) throws Exception
	{
		Categoria categoria= new Categoria();
		
		String tiraSQL= "select * from \"CATEGORIAS\" where nombre_corto='" + nombreCorto + "' and " +
				        "status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{
			categoria.setCodCategoria(rs.getString("cod_categoria"));
			categoria.setNombreCorto(nombreCorto);
			categoria.setNombreLargo(rs.getString("nombre_largo"));
		}
		else
		{
			categoria= null;
		}
		
		return categoria;
	}
	
	public boolean isEliminado(Categoria categoria) throws Exception
	{
        boolean seEncuentra= false;
		
		String tiraSQL= "select cod_categoria,nombre_corto,nombre_largo" +
        " from \"CATEGORIAS\" where cod_categoria='" + categoria.getCodCategoria() + 
        "' and status='E'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			seEncuentra= true;
			
			String nombre_corto="",nombre_largo="";
			
			categoria.setNombreCorto(nombre_corto);
			categoria.setNombreLargo(nombre_largo);			
		}
		
		return seEncuentra;
	}
	
	public boolean consultarCategoria(Categoria categoria) throws Exception
	{
		boolean seEncuentra= false;
		
		String tiraSQL= "select *" +
        " from \"CATEGORIAS\" where cod_categoria='" + categoria.getCodCategoria() + 
        "' and status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			seEncuentra= true;
			
		}
		
		return seEncuentra;
	}
	public boolean isDependiente(Categoria categoria) throws Exception
	{
		boolean dependiente= false;
		
		String tiraSQL= "select \"CATEGORIAS\".cod_categoria from \"CATEGORIAS\",\"PRODUCTOS\" " +
				        "where \"CATEGORIAS\".cod_categoria='" + categoria.getCodCategoria() + 
				        "' and \"CATEGORIAS\".cod_categoria=\"PRODUCTOS\".cod_categoria " +
				        " and " + " \"CATEGORIAS\".status='A' and \"PRODUCTOS\".status='A' ";
		
        ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			dependiente= true;
			
		}
		
		return dependiente;
	}
	
	public List<Categoria> consultarCategorias() throws Exception
	{
		ArrayList<Categoria> lista= new ArrayList<Categoria>();
		
		String tiraSQL= "select * from \"CATEGORIAS\" where status='A'";

        ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		Categoria categoria= null;
        
        
        while (rs.next())
        {
        	categoria= new Categoria(rs.getString("cod_categoria"),rs.getString("nombre_corto"),rs.getString("nombre_largo"));
        	
            lista.add(categoria);
        }
        
        
		return lista;
	}




}
